//
//  ReversiBoardLineRange.h
//  Reversi
//	リバーシボード上の線分
//
//  Created by 成瀬 龍人 on 2/5/10.
//  Copyright 2010 __MyCompanyName__. All rights reserved.
//

#import <Foundation/Foundation.h>
#import "ReversiBoardPosition.h"
#import "ReversiBoardLineDirection.h"
@class ReversiBoardLineRangeEnumerator;

@interface ReversiBoardLineRange : NSObject <NSFastEnumeration> {
	//	線分の開始点
	ReversiBoardPosition* startPosition;
	//	線分の方向
	ReversiBoardLineDirection* direction;
	//	線分の長さ
	int numberOfStone;
}

//	線分の開始点を取得
@property (readonly) ReversiBoardPosition* startPosition;
//	線分の方向を取得
@property (readonly) ReversiBoardLineDirection* direction;
//	線分の長さを取得
@property (readonly) int numberOfStone;

//	初期化
- (id)init:(ReversiBoardPosition*)start
	   dir:(ReversiBoardLineDirection*)dir
	   num:(int)num;

//	NSFastEnumerationプロトコルのメソッド
//	線分を構成するボード上の座標を列挙
- (NSUInteger)countByEnumeratingWithState:(NSFastEnumerationState *)state 
								   objects:(id *)stackbuf 
									 count:(NSUInteger)len;

//	線分を構成するボード上の座標を列挙するenumeratorを取得
- (ReversiBoardLineRangeEnumerator*)positionEnumerator;

//	同値
- (bool)isEqual:(id)object;

//	コピー
- (id)copyWithZone:(NSZone*)zone;
@end
